/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package utils;

import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;

/**
 * Clase que obtiene de un archivo el mensaje a mostrar de acuerdo al número de error
 * @author Marcelo
 */
public class Errors {
    static final String file2GetMessages = "ErrorMsgs.props";
    static final String file2WriteLog = "ErrorLog.log";

    /**
     * Revisa el numero de error y muestra un mensaje
     * @param number Codigo error
     * @param exc Excepcion de la cual salio el error
     */
    static public void CheckError(int number, Exception exc)
    {
        try
        {
            Properties properties = new Properties(); //para leer archivo de propiedades
            properties.load(new FileInputStream(file2GetMessages)); //cargamos

            String msg = properties.getProperty(number + "", ""); //obtenemos el mensaje con el numero que nos pasa como parametro

            if (msg.length() > 0) //mostrar un mensaje de error solo si dicho mensaje existe
                JOptionPane.showMessageDialog(null,msg, "ERROR", JOptionPane.WARNING_MESSAGE);

            //Ahora creamos un log de la excepcion
            BufferedWriter writer = new BufferedWriter( new FileWriter(file2WriteLog,true)) ;
            writer.append(stack2string(exc));
            writer.close() ;
        }
        catch (IOException e)
        {
            JOptionPane.showMessageDialog(null,"No se ha podido leer el archivo de mensajes de error.", "ERROR", JOptionPane.WARNING_MESSAGE);
            return;
        }            
    }
    /**
     * Convierte el printStackTrace() a cadena de texto para que pueda ser guardado
     * @param e La excepcion
     * @return La cadena de texto de printStackTrace()
     */
    public static String stack2string(Exception e) {
        try {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            e.printStackTrace(pw);
            return "-------\r\n" + sw.toString() + "-------\r\n";
        }
        catch(Exception e2)
        {
            return "---x---";
        }
    }
}
